package Principal;

import mundo.Equipo;
import mundo.Partido;

import java.util.Scanner;
import mundo.Jugador;

public class Torneo {

    // <editor-fold defaultstate="collapsed" desc="Propiedades Publicas y Privadas">
    // Atributos
    private static Jugador arreglo_Jugador[] = new Jugador[2]; // ARREGLO JUGADOR
    private static Equipo[] arregloEquipo  = new Equipo[2];// ARREGLO EQUIPO
// </editor-fold>

    // PRINCIPAL
    public static void main(String[] args) {


        int opcion;

        //metodo que repite el menu de interacci�n
        do {
            System.out.println("Que desea hacer :");
            System.out.println("1. Crear Equipos y Jugadores del torneo");
            System.out.println("2. Ver tabla del torneo");

            Scanner teclado = new Scanner(System.in);
            opcion = teclado.nextInt();

            switch (opcion) {
                case 1:
                    CrearEquipos();
                    break;

                case 2:
                    verTabla();
                    break;
                default:
                    break;
            }


        } while (opcion != 0);
    }

    // METODO EJECUTAR
    // ARREGLO QUE LLEVA LOS DATOS DE LOS JUGADORES....
    /**
     * Metodo CrearEquipos
     */
    private static void CrearEquipos() {

        Scanner teclado = new Scanner(System.in); // SE UTILIZA SCANNER
        Scanner teclado2 = new Scanner(System.in);// PERO EL NOMBRE DEL OBJETO
        // EL DIFERENTE
        Scanner teclado3 = new Scanner(System.in);
        Scanner teclado4 = new Scanner(System.in);
        Scanner teclado5 = new Scanner(System.in);

        for (int j = 0; j < arregloEquipo.length; j++) {

            System.out.println("Digite nombre del Equipo  " + j);// iNGRESA
            // ATRIBUTO
            // CLASE
            // EQUIPO
            String NombreEquipo = teclado.nextLine();
            System.out.println("Digite Facultad");

            String facultad = teclado.nextLine();// INGRESA ATRIBUTO CALSE
            // EQUIPO
            // INSTANCIO UN OBJETO CON NOMBRE JUGADOR
            Equipo E1 = null;
            for (int i = 0; i < arreglo_Jugador.length; i++) {// CICLO DEL
                // ARREGLO DE
                // JUGADORES

                System.out.println((new StringBuilder(
                        "Digite Nombre del Jugador  ")).append(i).toString()
                        + "  del equipo  " + NombreEquipo);
                String nombre_jugador = teclado.nextLine();
                System.out.println((new StringBuilder(
                        "Digite Apellido del Jugador ")).append(i).toString()
                        + "  del equipo  " + NombreEquipo);
                String apellido_jugador = teclado2.nextLine();
                System.out.println((new StringBuilder("Digite Sexo (M,F) ")).append(i).toString()
                        + "  del equipo  "
                        + NombreEquipo);
                String sexo_jugador = teclado3.nextLine();
                System.out.println((new StringBuilder("posicion  ")).append(i).toString() + "  del equipo  " + NombreEquipo);
                String posicion_jugador = teclado4.nextLine();
                System.out.println((new StringBuilder("Identificacion  ")).append(i).toString()
                        + "  del equipo  "
                        + NombreEquipo);

                String ident_jugador = teclado5.nextLine(); // IMPRIME EL DATO
                // QUE SE NECESITA
                // DE LA CLASE
                // JUGADOR

                arreglo_Jugador[i] = new Jugador(nombre_jugador,
                        apellido_jugador, sexo_jugador, posicion_jugador,
                        ident_jugador);// EN LOS PARAMETROS LOS DECLARO EN LA
                // CLASE JUGADOR, PERO AQUI PIDE

                // EL VALOR COLOCADO AL CONSTRUCTOR DE LA CLASE JUGADOR..
                E1 = new Equipo(NombreEquipo, facultad, arreglo_Jugador, j);
                E1.setNumJugadores(11);
                E1.setId_equipo(j);
                E1.setarregloJugador(arreglo_Jugador);




            }
            arregloEquipo[j] = E1;
        }

        // verificar repetidos en el vector de Equipos (torneo[])

        // invocando al metodo de verificar jugadores
        verificarjugadores(arregloEquipo);
        boolean verificar = verificarjugadores(arregloEquipo);

        if (verificar) {
            System.out.println("No hay jugadoresrepetidos");
        } else {
            System.out.println("Existen uno o varios jugadores repetidos");
        }

    }

    /**
     * Metodo verificar jugadores
     */
    private static boolean verificarjugadores(Equipo[] arregloEquipo) {

        try {

            String[] j_encontrados = new String[88];
            int contador_jugadores = 0;

            for (int z = 0; z < arregloEquipo.length; z++) {

                // verificar por cada equipo cuantos juga hay repetidos en el
                // arreglo de tipo equipo
                Equipo buscar_identificacion = (Equipo) arregloEquipo[z];

                // Sacar jugadores para meterlos en un nuevo vector

                for (int k = 0; k < buscar_identificacion.getArregloJugador().length; k++) {

                    // contador: caso de reseteo de valriables en multiples
                    // ciclos
                    // cuenta can veces que entrea en el ciclo de jugadores
                    j_encontrados[contador_jugadores] = buscar_identificacion // k muestra lo que esta en el arreglo
                            .getArregloJugador()[k].getIdent();
                    contador_jugadores++;
                }

            }

            // comparar ides de todos los jugadores
            for (int t = 0; t < contador_jugadores; t++) {

                String t_identificacion = j_encontrados[t].toString();


                for (int i = 0; i < j_encontrados.length; i++) {

                    if (t != i) {
                        if (t_identificacion == j_encontrados[i].toString()) {
                            return false;
                        }
                    }

                }
            }
            return true;
        } catch (Exception e) {

            return false;
            // TODO: handle exception
        }

    }

    /**
     * Metodo verTabla
     */
    private static void verTabla() {
        String[] Equipos_Encontrados = new mundo.Partido().crearVS(arregloEquipo);
        Object[] Rondas = new mundo.Partido().primeraRonda(Equipos_Encontrados);
        
        String[] rondaA = (String [])Rondas[0]; 
        String[] rondaB = (String [])Rondas[1]; 
        
        
    }

    /**
     * Metodo Resultados de los enfrentamientos
     */
    public static void resultados() {

        // se crea un objeto de tipo partido y se carga el arreglo de todos los equipos con el random
        //ya realizado, aqui se le pide ingresar al usuario el resultado del encuentro de los equipos.

        Partido p1 = new Partido();
        Scanner r = new Scanner(System.in);

        System.out.println("Resultado del encuentro de los equipos ");
        System.out.println("Ingrese el resultado del equipo");
        int resul_1 = r.nextInt();

        System.out.println("Ingrese el resultado del equipo");
        int resul_2 = r.nextInt();




    }
}
